// import { getLocalStorage } from '@/utils/localstorage';

/**
 * 功能描述：资源管理列表数据转换成父与子的关系的treeData
 * 使用位置：资源管理列表，添加||修改资源管理
 * @Author  likai
 * @date    2019-10-10 16:20:24
 * @Params  result:需要转换的list数据
 * @Params  pid:已指定的根节点id开始递归遍历
 */

export const getTreeChild = (result,pid)=>{
  let newRes = result.filter(item=>item.parentId==pid)
  newRes = newRes.map(it=>{
    let {id,parentId,parentIds,menu,rootNode,name,type} = it
    let children = getTreeChild(result,id)
    let obj = {
      key:id.toString(),
      id:id.toString(),
      value:id.toString(),
      title:name,
      checked:!!it.checked,
      
      url:it.url,
      sort:it.sort,
      permission:it.permission,
      available:it.available,
      isShow:it.isShow,
      parentId,parentIds,menu,rootNode
    }
    if(type!==null&&type!==undefined){
      obj.type=type.toString()
    }
    if(children.length){
      obj.children=children
    }
    return obj
  })
  return newRes
}

/**
 * 功能描述：根据选中的子节点数据，遍历出对应的父节点id，添加到checked中，最后返回checked，体现在用户登录的时候有一个完整的结构目录
 * 使用位置：角色管理，分配权限保存的时候
 * @Author  likai
 * @date    2019-10-11 11:20:24
 * @Params  treeData:需要遍历的资源树的数据，treeData
 * @Params  checked:选中的子节点ids
 */
export const getParentIdByChild = (treeData,checked,parent={})=>{
  treeData = JSON.parse(JSON.stringify(treeData))
  let newData = treeData.reduce((sub,item)=>{
    let {id,children,text} = item
    if(children&&children.length){
      /*
      * 第一步：首先递归遍历出所有没有子节点的节点 ,
      */ 
      getParentIdByChild(children,sub,{parentId:id,text:text})
      /**
      * 2、第一步递归完所有没有子节点的节点后，将父节点的子节点数据置空，children=[],
      *    数据置空后，手动设置为没有子节点的节点，然后递归遍历，
      */
      children = children.map(item => {
        item.children=[]
        return item
      })
      getParentIdByChild(children,sub,{parentId:id,text:text})
    }else{
      /**
      * 没有子节点的节点，如果节点有选中，就push父节点的id到array内
      * 注意不要重复添加
      */
      // if(sub.indexOf(id.toString())>-1){
      if(sub.findIndex(it=>it==id)>-1){
        sub.indexOf(parent.parentId)==-1&&sub.unshift(parent.parentId)
      }
    }
    return sub
  },checked)
  return newData
}

/**
 * 功能描述：获取所有没有子节点的节点id&&checked==1的集合，展示antd的Tree组件，组件会计算子节点是否全选来显示父节点样式
 * 使用位置：角色管理，获取角色的分配权限数据，
 * @Author  likai
 * @date    2020-04-27 12:20:24
 * @Params  treeData:需要遍历的资源树的数据，treeData
 * @Params  list:所有checked==1&&没有子节点的节点id集合
 */
export const getCheckedIds = (treeData,list=[])=>{
  let ids = treeData.reduce((arr,item,index)=>{
    let {children,checked,id} = item
    if(children&&children.length>0) {
      getCheckedIds(children,arr)
    }else if(!children&&!!checked){
      arr.push(id)
    }
    return arr
  },list)
  return ids
}

// /**
//  * 导航栏面板屑，
//  * 返回key-value
// */ 
// const getCrumbsData=(tree,data={})=>{
//   let newData = tree.reduce((obj,item)=>{
//     let {url,content,children,type} = item
//     if(type==1&&children&&children.length){
//       obj[url] = content
//       let subData = getCrumbsData(children)
//       obj = {...obj,...subData}
//     }
//     return obj
//   },data)
//   return newData
// }


// /**
//  * 所有按钮权限的集合，
//  * 返回key-value
// */ 
// const getFuctions=(tree,data={})=>{
//   let newData = tree.reduce((obj,item)=>{
//     let {url,resourcesCode,children,type,content} = item
//     if(children&&children.length){
//       getFuctions(children,obj)
//     }else{
//       obj[resourcesCode] = resourcesCode+'_'+content
//     }
//     return obj
//   },data)
//   return newData
// }
// export const initReduceStore = ()=>{
//   let userResult = JSON.parse(getLocalStorage('USER_RESULT'))||[]
//   let userInfo = JSON.parse(getLocalStorage('USER_INFO'))||{}
//   let menudata = JSON.parse(JSON.stringify(fnSetTreeData(userResult)))  
//   let crumbsWithoutLeft = getCrumbsData(menudata)
//   let functions = getFuctions(menudata)

//   return {
//     crumbs:crumbsWithoutLeft,
//     userInfo:userInfo,
//     menudata:menudata,
//     functions:functions
//   }
// }
